Many prior art computer systems are typically configured at a minimum with a processor, a random access memory device, and a read only memory device. Some systems, such as a variety of calculators, may operate with only a processor and a read only memory device. Read only memory devices (ROM) provide a non-volatile form of memory that is not destroyed when power is removed from the computer system.
Prior art computer systems are typically bootstrapped (i.e. power up initialized) using the processing logic (i.e. firmware) stored within the read only memory device internal to the computer system. Since the read only memory device is non-volatile, the firmware within ROM is guaranteed to contain valid data or instructions; thus, the prior art computer system can be reliably bootstrapped using firmware within ROM. Many computer systems have successfully used this technique. One such system is the IBM Personal Computer (PC) developed by the IBM Corporation of Armonk, N.Y. Prior art versions of the IBM PC use read only memory devices for storage of firmware or a basic input/output system (BIOS) software program. The BIOS is an operating system that provides the lowest level of software control over the hardware and resources of the computer system. ROM storage may also be used for non-volatile retention of network configuration data or application specific data. ROM devices in the prior art include basic read only memory devices (ROM), programmable read only memory devices (PROM), and erasable programmable read only memory devices (EPROM). Battery-backed random access memory devices such as CMOS RAM devices may also be used for non-volatile retention of network configuration data or application specific data in a computer system.
Although ROM-based computer systems have been very successful in the prior art, a number of problems exist with the use of these devices in a computer system. Most computer systems have a finite address space in which each of the computer system resources must operate. These resources include ROM, random access memory (RAM), input/output devices, and possibly other processors. ROM devices with a BIOS contained therein are typically constrained to a specific address range within the address space available. In order to maintain compatibility with a particular computer architecture, designers and developers in the computer industry create products in reliance on a particular ROM address standard. For example, the IBM PC AT architecture mandates that the ROM BIOS and other firmware based applications are limited to a 128K address space at the top of the first megabyte of memory. With this architecture, however, the ROM BIOS cannot exceed 128K of ROM space. Within this ROM space, the BIOS must contain processing logic for initializing and controlling many of the hardware systems and resources of the computer system. With the increased functionality of model computer systems, the complexity of hardware systems and resources increases as does the quantity of BIOS code required to support them. Also, because of new technologies and capabilities such as Extended Industry Standard Architecture (EISA) systems, flash memory and multi-language support for international operation of a computer system, it is becoming increasingly unfeasible to fit all desired BIOS features within the 128K boundary of the IBM PC AT architecture. Other varieties of computer systems typically have an established limit for the size of their BIOS. Even though the need for expanding the BIOS boundary is growing, the boundary cannot be arbitrarily modified without losing compatibility with established standards.
Thus, a means for expanding the useable BIOS memory space without violating established BIOS address boundary standards is needed.